package com.ruoyi.business.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

import javax.validation.constraints.Email;
import javax.validation.constraints.Size;

/**
 * 售后预约对象 jt_customer_service
 *
 * @author Alan Zhang
 * @date 2025-04-07
 */
public class JtCustomerService extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 售后服务id */
    private Long serviceId;

    /** 用户id */
    @Excel(name = "用户id")
    private Long userId;

    /** 国家码 */
    @Excel(name = "国家码")
    private Integer countryCode;

    /** 预约联系电话 */
    @Excel(name = "预约联系电话")
    private String phoneNumber;

    /** 预约邮箱 */
    @Email(message = "邮箱格式不正确")
    @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
    @Excel(name = "预约邮箱")
    private String email;

    /** 预约详细地址 */
    @Excel(name = "预约详细地址")
    private String fullAddress;

    /** 设备型号 */
    @Excel(name = "设备型号")
    private String deviceModelNo;

    /** 预约维修时间 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "预约维修时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date repairTime;

    /** 故障问题 */
    @Excel(name = "故障问题")
    private String problem;

    /** 故障问题图片1 */
    @Excel(name = "故障问题图片1")
    private String imageUrl1;

    /** 故障问题图片2 */
    @Excel(name = "故障问题图片2")
    private String imageUrl2;

    /** 处理状态（0待维修 1维修中 2用户取消 3维修完成） */
    @Excel(name = "处理状态", readConverterExp = "0=待维修,1=维修中,2=用户取消,3=维修完成")
    private Integer repairStatus;

    /** 维修人员用户ID */
    @Excel(name = "维修人员用户ID")
    private Long repairUserId;

    /** 维修人员 */
    @Excel(name = "维修人员")
    private String repairBy;

    /** 维修人员电话 */
    @Excel(name = "维修人员电话")
    private String repairPhoneNumber;

    /** 维修完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "维修完成时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date repairFinishTime;

    /** 维修结果说明 */
    @Excel(name = "维修结果说明")
    private String repairResult;

    public void setServiceId(Long serviceId)
    {
        this.serviceId = serviceId;
    }

    public Long getServiceId()
    {
        return serviceId;
    }

    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }

    public void setCountryCode(Integer countryCode)
    {
        this.countryCode = countryCode;
    }

    public Integer getCountryCode()
    {
        return countryCode;
    }

    public void setPhoneNumber(String phoneNumber)
    {
        this.phoneNumber = phoneNumber;
    }

    public String getPhoneNumber()
    {
        return phoneNumber;
    }

    public void setEmail(String email)
    {
        this.email = email;
    }

    public String getEmail()
    {
        return email;
    }

    public void setFullAddress(String fullAddress)
    {
        this.fullAddress = fullAddress;
    }

    public String getFullAddress()
    {
        return fullAddress;
    }

    public String getDeviceModelNo() {
        return deviceModelNo;
    }

    public void setDeviceModelNo(String deviceModelNo) {
        this.deviceModelNo = deviceModelNo;
    }

    public void setRepairTime(Date repairTime)
    {
        this.repairTime = repairTime;
    }

    public Date getRepairTime()
    {
        return repairTime;
    }

    public void setProblem(String problem)
    {
        this.problem = problem;
    }

    public String getProblem()
    {
        return problem;
    }

    public void setImageUrl1(String imageUrl1)
    {
        this.imageUrl1 = imageUrl1;
    }

    public String getImageUrl1()
    {
        return imageUrl1;
    }

    public void setImageUrl2(String imageUrl2)
    {
        this.imageUrl2 = imageUrl2;
    }

    public String getImageUrl2()
    {
        return imageUrl2;
    }

    public void setRepairStatus(Integer repairStatus)
    {
        this.repairStatus = repairStatus;
    }

    public Integer getRepairStatus()
    {
        return repairStatus;
    }

    public void setRepairBy(String repairBy)
    {
        this.repairBy = repairBy;
    }

    public String getRepairBy()
    {
        return repairBy;
    }

    public void setRepairPhoneNumber(String repairPhoneNumber)
    {
        this.repairPhoneNumber = repairPhoneNumber;
    }

    public String getRepairPhoneNumber()
    {
        return repairPhoneNumber;
    }

    public void setRepairFinishTime(Date repairFinishTime)
    {
        this.repairFinishTime = repairFinishTime;
    }

    public Date getRepairFinishTime()
    {
        return repairFinishTime;
    }

    public void setRepairResult(String repairResult)
    {
        this.repairResult = repairResult;
    }

    public String getRepairResult()
    {
        return repairResult;
    }

    public Long getRepairUserId() {
        return repairUserId;
    }

    public void setRepairUserId(Long repairUserId) {
        this.repairUserId = repairUserId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("serviceId", getServiceId())
                .append("userId", getUserId())
                .append("countryCode", getCountryCode())
                .append("phoneNumber", getPhoneNumber())
                .append("email", getEmail())
                .append("fullAddress", getFullAddress())
                .append("repairTime", getRepairTime())
                .append("problem", getProblem())
                .append("imageUrl1", getImageUrl1())
                .append("imageUrl2", getImageUrl2())
                .append("repairStatus", getRepairStatus())
                .append("repairBy", getRepairBy())
                .append("repairPhoneNumber", getRepairPhoneNumber())
                .append("repairFinishTime", getRepairFinishTime())
                .append("repairResult", getRepairResult())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
